#ifndef _GUI_WINDOW_LINUX_
#define _GUI_WINDOW_LINUX_

#include <gtkmm.h>
#include "../GUI.h"
#include "Core/Memory/HeapObject.h"
#include "Core/GUI/Application/IWindow.h"

class Window : public IWindow, public HeapObject
{
public:
	Window(const std::string & _strName);
	virtual ~Window();
	GUI_LINUX virtual bool Create(const std::string & _strName, uint32 _iWidth, uint32 _iHeight);
	GUI_LINUX virtual void Resize(uint32 _iWidth, uint32 _iHeight);
	GUI_LINUX virtual const std::string & GetName();
	GUI_LINUX virtual void Loop();
	GUI_LINUX virtual void SetLayout(IVerticalLayout * _pLayout);
	GUI_LINUX virtual void SetLayout(IHorizontalLayout * _pLayout);

private:
	Glib::RefPtr<Gtk::Application> m_pApplication;
	Gtk::Window m_window;
	std::string m_strName;
};

#endif // _GUI_WINDOW_LINUX_